import type { App } from 'vue';
import { createPinia } from 'pinia';
import {
  useAppStore, usePermissionStore, useUserStore, AppStorePropsType, PermissionStorePropsType, UserStorePropsType,
  useTagsViewStore, TagsViewStorePropsType,
} from '@fssc/admin';

const store = createPinia();

export default {
  install(app: App) {
    app.use(store);
  },
};

export const useAppStoreWithOut = () : AppStorePropsType => useAppStore(store);

export const usePermissionStoreWithOut = () : PermissionStorePropsType => usePermissionStore(store);

export const useUserStoreWithOut = () : UserStorePropsType => {
  const userStore = useUserStore(store);
  userStore.setUserInfo({
    name: 'admin',
    menuCodeList: ['MoreLevel', 'OneLevel', 'OneDetail', 'TwoLevel', 'TwoDetail', 'TwoDetailDetail', 'OneMenu', 'TestOne', 'TestTwo', 'OneMenuXX', 'ParentShow', 'TestOneShow', 'TestTwoShow', 'TestOneHidden', 'TestTwoShowHidden'],
  });
  return userStore;
};

export const useTagsViewStoreWithOut = () : TagsViewStorePropsType => {
  return useTagsViewStore(store);
}

export {
  useAppStore,
  usePermissionStore,
  useUserStore,
  store,
};
